package xkp.lesson3;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class TestIterator {
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("111");
		list.add("222");
		list.add("222");
		list.add("333");
		list.add("444");
		list.add("555");
		list.add("222");

		//我们可以使用增强型for遍历
		System.out.println("**************使用增强型for遍历**************");
		for(String str:list) {
			System.out.println(str);
		}
		//可以使用普通for循环遍历
		System.out.println("**************使用普通for循环遍历**************");
		for(int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}

		//可以使用迭代器遍历(效率最高)
		System.out.println("**************使用迭代器遍历(效率最高)**************");
		Iterator<String> iterator = list.iterator();
		while(iterator.hasNext()) {
			String str = iterator.next();
			System.out.println(str);
		}
		//推荐使用迭代器遍历
		//面试时经常出现的面试点
		//由于集合框架可以删除和添加,会造成长度是可变的
		//面试时经常出现在遍历时去添加或者删除元素
		//删除所有的"222"这个字符串
		//遍历时去删除
		//集合框架注意事项不要随便在遍历时去改变(删除)集合数据的长度
		System.out.println(list);
		//		for(String str:list) {
		//			if(str.equals("222")) {
		//				list.remove(str);
		//			}
		//		}

		//System.out.println(list);

//		for(int i = 0; i < list.size(); i++) {
//			if(list.get(i).equals("222")) {
//				list.remove(i);
//				i--;
//			}
//		}
		System.out.println(list);
		
		while(iterator.hasNext()) {
			String str = iterator.next();
			if(str.equals("222")) {
				iterator.remove();
			}
		}
		
		System.out.println(list);

	}

}
